Method and system for controlling sets of collinear control moment gyroscopes

ABSTRACT

A control system of a spacecraft for controlling two or more sets of collinear control moment gyroscopes (CMGs) comprises an attitude control system. The attitude control system is configured to receive a command to adjust an orientation of the spacecraft, determine an offset for a momentum disk for each of the two or more sets of CMGs that maximizes torque, determine a momentum needed from the two or more sets of CMGs to adjust the orientation of the spacecraft, and calculate a total torque needed by taking the derivative of the momentum. The control system further comprises a momentum actuator control processor coupled to the attitude control system, the momentum actuator control processor configured to calculate a required gimbal movement for each of the CMGs in each of the two or more sets of collinear CMGs from total torque.

FIELD OF THE INVENTION

This invention relates to the field of spacecraft vehicle control and, more specifically, to a method and system for controlling sets of collinear control moment gyroscopes.

BACKGROUND OF THE INVENTION

In order to control the attitude of a spacecraft, various rotating inertia members can be used. One such inertia member is a control moment gyroscope (CMG). A CMG typically comprises a flywheel with a fixed or variable spin rate mounted to a gimbal assembly. The spin axis of the CMG can be tilted by moving the CMG using the gimbal assembly. This motion produces a gyroscopic torque orthogonal to the spin axis and gimbal axis.

To achieve, full attitude control of a spacecraft, a CMG array, including a minimum of three CMGs may be arranged such that each CMG in the CMG array imparts torque about a linearly independent axis. Typically, additional CMGs are provided for redundancy purposes and to assist with singularity avoidance. A singularity can occur when the momentum vectors of the CMGs line up such that one or more components of the requested torque can not be provided. Rather than just ensuring that provided torque does not go to zero, this invention guarantees that provided torque equals requested torque, whenever requested torque values stay below some threshold.

Several different techniques have been developed to avoid singularities. In one method it is first noted that a Jacobian matrix A maps the CMG gimbal rates into a three dimensional array torque: Aω=τ  (1) where A is a 3×n Jacobian matrix, ω is a n×1 array of gimbal rates for the n gimbals, and τ is a 3×1 array of torque components to be imparted to the spacecraft. From the above equation and with a known torque command, τ, the individual gimbal rates for each CMG can be calculated. Using the known Moore-Penrose pseudoinverse to invert the Jacobian matrix, a set of possible gimbal rates is: ω=A ^(T)(AA ^(T))⁻¹τ.  (2)

As discussed previously, inherent in the use of CMGs is the possibility that the CMGs' momentum vectors may line up in such a way that a singularity condition is reached. Mathematically, singularities can occur when the eigenvalues of AA^(T) approach zero, causing (AA^(T))⁻¹ to approach infinity. Equivalently, singularities occur when the determinant of the matrix AA^(T) is equal to zero (expressed algebraically as det (AA^(T))=0). In the case of a 3×n matrix A, this is equivalent to the rank of the matrix AA^(T) being two or less.

Different approaches have been devised to avoid singularities in the movement of CMGs. In one approach, to ensure that (AA^(T))⁻¹ is never zero, (AA^(T))⁻¹ is replaced by (AA^(T)+εI)⁻¹ where I is the identity matrix and ε is a small number. The use of a positive ε ensures that det (AA^(T)+εI)⁻¹ never becomes 0.

While useful in some instances, a drawback to this approach is that it changes the gimbal rate calculation. In the case of the Jacobian A, the use of the pseudoinverse means that gimbal rates are no longer exactly mapped into the commanded torques because of the error ε introduces. This resulting error steers the spacecraft in the wrong direction and can introduce significant, undesired torque, especially near the singularity.

A second approach is to limit the CMG array's momentum output to a smaller area within a momentum envelope. The momentum envelope is the momentum provided in all possible combinations of the CMGs in the CMG array. In one exemplary embodiment, depending on the CMG arrangement, by operating within one-third or less of the total momentum envelopes, singularities can be avoided. However, this approach wastes potential torque and results in systems that are larger and heavier than needed.

In view of the foregoing, it is desirable to provide a method for controlling sets of collinear CMGs that addresses one or more of the foregoing deficiencies or other deficiencies not implicitly or expressly described. It is also desirable to provide a system for controlling sets of collinear CMGs that addresses one or more of the foregoing deficiencies or other deficiencies not implicitly or expressly described. Furthermore, other desirable factors and characteristics of the present invention will become apparent from the subsequent detailed description and the appended claims, taken in conjunction with the accompanying drawings and the foregoing technical field and background.

SUMMARY OF THE INVENTION

In an exemplary embodiment a method for controlling the movement of two or more sets of collinear control moment gyroscope (CMGs) in an array of CMGs in a spacecraft is disclosed. In a first step, an offset for each CMG set of the two or more sets of collinear CMGs to maximize available torque is determined. Next, a total torque to adjust the orientation of the spacecraft is calculated. The total torque is allocated to produce an allocated torque for each set of the two or more sets of collinear CMGs. Then, a required gimbal movement for each set of the CMGs in the two or more sets of collinear CMGs from the allocated torque is calculated.

A control system of a spacecraft for controlling two or more sets of collinear control moment gyroscopes (CMGs) comprises an attitude control system. The attitude control system is configured to receive a command to adjust an orientation of the spacecraft, determine an offset for a momentum disk for each of the two or more sets of CMGs that maximizes available torque, determine a momentum needed from the two or more sets of CMGs to adjust the orientation of the spacecraft, and calculate a total torque needed by taking the derivative of the momentum. The control system further comprises a momentum actuator control processor coupled to the attitude control system, the momentum actuator control processor configured to calculate a required gimbal movement for each of the CMGs in each of the two or more sets of collinear CMGs from total torque.

In another embodiment, a method for singularity-free movement of an array of control moment gyroscopes (CMGs) comprises a first step of allocating the array of CMGs as at least two sets of collinear CMGs. Next, an offset for a momentum ellipse for each of the two sets of CMGs that maximizes torque is calculated. Then, a momentum radius f(A) that defines a sphere of allowable momentum is determined. Next, it is determined whether a requested momentum to change the orientation of a spacecraft is within the sphere of allowable momentum. Then, a gimbal movement for each CMG to provide the requested momentum is determined if the requested momentum is within the sphere of allowable momentum.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention will hereinafter be described in conjunction with the following drawing figures, wherein like numerals denote like elements, and:

FIG. 1 is a block diagram illustrating an exemplary CMG control system in accordance with an exemplary embodiment of the present invention;

FIG. 2 illustrates momentum vectors for three CMGs having two independent gimbal angles;

FIG. 3 illustrates momentum ellipses in relation to annular regions formed by torque boundaries that avoid singularities;

FIGS. 4 a and 4 b illustrate momentum ellipses for different solutions that maximize the ellipses in an annular region; and

FIG. 5 is a flowchart illustrating a method for maneuvering a spacecraft in accordance with an exemplary embodiment of the present invention.

DETAILED DESCRIPTION OF THE DRAWINGS

The following detailed description is merely exemplary in nature and is not intended to limit the invention or the application and uses of the invention. Furthermore, there is no intention to be bound by any expressed or implied theory presented in the preceding technical field, background, brief summary or the following detailed description.

An exemplary control system 100 for implementing the present invention is illustrated in FIG. 1. The components of the control system 100 are known in the art and can be assembled in different ways using different processors, software, controllers, sensors, and the like. Additionally, various computational functionalities that are typically provided by one part of the system can instead be provided by another part. The system 100 as shown in FIG. 1 includes parts that are pertinent to the discussion of the present invention and the system 100 may include other elements or systems that might be provided in a control system and which are well known and not shown in FIG. 1.

The control system 100 includes an attitude control system 102 coupled to a momentum actuator control processor 104. CMGs 106 are coupled the momentum actuator control processor 104. Associated with each CMG 106 are one or more CMG sensors 108 for providing information concerning the state of the CMG 106 to the control system 100. Control system 100, in one embodiment, is mounted on a spacecraft such as an orbiting satellite.

Attitude control system 102 controls the positioning of a spacecraft. The attitude control system 102 receives data concerning a desired spacecraft maneuver and determines an appropriate torque command to complete the desired maneuver. The torque commands can be presented to the momentum actuator control processor 104. The momentum actuator control processor 104, in response to the torque commands, can calculate the gimbal rates necessary to produce the commanded torque. Additionally, the momentum actuator control processor 104 calculates gimbal movement from a momentum path determined by a steering law. The momentum actuator control processor 104, based on these calculations, provides the necessary commands to the CMGs 106 such that the CMG movement produces the commanded torque and, in accordance with the teachings of the present invention, provides the torque while avoiding singularities. This can be accomplished, in one exemplary embodiment, by changing the gimbal angles of the CMGs at a certain gimbal angle rate.

A single-gimbal CMG has constant momentum magnitude, and rotates about one axis. The constant gimbal axis of the i^(th) CMG in a set of CMGs can be denoted with unit vector p_(i)∈R³, and the momentum vector of the i^(th) CMG in a set of CMGs can be denoted by vector h_(i)∈R³. The gimbal angle of the ith CMG will be denoted by θ_(i). Thus: p _(i) ′*h _(i)(θ_(i))=0 p _(i) ′*p _(i)=1  (3)

The torque of the i^(th) CMG in a set of CMGs can be denoted by the vector τ_(i)∈R³: $\begin{matrix} {\tau_{i} = {\frac{\mathbb{d}h_{i}}{\mathbb{d}t} = {\left( {p_{i} \times h_{i}} \right){\overset{.}{\theta}}_{i}}}} & (4) \end{matrix}$

The total momentum and torque of a system of n CMGs can be denoted by: $\begin{matrix} {h = {\sum\limits_{i = 1}^{n}h_{i}}} & (5) \\ {\tau = {\sum\limits_{i = 1}^{n}\tau_{i}}} & (6) \end{matrix}$

One way to arrange CMGs and achieve full attitude control of a spacecraft is to partition multiple CMGs into two or more sets of collinear CMGs. Each CMG in a set of collinear CMGs shares the same gimbal axis direction, but each set of collinear CMGs can have an arbitrary gimbal-axis orientation. In one exemplary embodiment, n CMGs are partitioned into k sets, S_(k), with unit vectors {p₁, p₂, . . . , p_(k)} different from each other. In an exemplary embodiment, eight (8) CMGs can be partitioned into three (3) sets, with {p₁, p₂, p₃} different from each other: S₁={1,4,7} p₁=p₄=p₇ S₂={2,5,8} p₂=p₅=p₈ S₃={3,6} p₃=p₆

Each set of collinear CMGs produces a momentum space confined within a disc or annulus: $\begin{matrix} {\begin{matrix} {h_{{disc}\quad 1} = {\sum\limits_{i \in S_{1}}h_{i}}} & {{{where}\quad p_{1}^{\prime}*h_{{disc}\quad 1}} = 0} \end{matrix}\begin{matrix} {h_{{disc}\quad 2} = {\sum\limits_{i \in S_{2}}h_{i}}} & {{{where}\quad p_{2}^{\prime}*h_{{disc}\quad 2}} = 0} \end{matrix}\vdots\begin{matrix} {h_{{disc}_{k}} = {\sum\limits_{i \in S_{k}}h_{i}}} & {{{where}\quad p_{k}^{\prime}*h_{{disc}_{k}}} = 0} \end{matrix}{h = {\sum\limits_{j = 1}^{k}h_{{disc}_{j}}}}} & (7) \end{matrix}$

If the largest momentum magnitude of any CMG in a collinear set of CMGs is less than or equal to the sum of the momentum magnitudes of all other CMGs, then the total momentum of that set of collinear CMGs will be a disk, otherwise the total momentum will be an annulus. Therefore, a set of two or more collinear CMGs, where each of the CMGs have equal momentum magnitude, will have its total momentum on a disk, while a collinear set of two CMGs with one CMG having more momentum magnitude than the other, results in the total momentum lying within an annulus whose inner radius is the difference of the two momenta.

The momentum, h_(i) with i∈S_(j), of a i^(th) CMG in a set of CMGs can be decomposed into one component in the h_(disc) _(j) direction and the rest in the p_(j)×h_(disc) _(j) direction: $\begin{matrix} {h_{i} = \quad{{\left( {h_{i} \cdot \quad\frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right)\quad\frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} + \quad{\left( {h_{i} \cdot \quad\left( {p_{j} \times \quad\frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right)} \right)\quad\left( {p_{j} \times \quad\frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}}\quad \right)}}} & (8) \end{matrix}$

From Eqn. 4, and noting that p_(j)×(p_(j)×h_(disc) _(j) )=−h_(dics) _(j) , torque due to the derivative of momentum is given by: $\begin{matrix} \begin{matrix} {\tau_{i} = \frac{\mathbb{d}h_{i}}{\mathbb{d}t}} \\ {= {\left( {p_{j} \times h_{i}} \right){\overset{.}{\theta}}_{i}}} \\ {= \left\lbrack {{\left( {h_{i} \cdot \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right)\left( {p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right)} -} \right.} \\ {\left. {\left( {h_{i} \cdot \left( {p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right)} \right)\frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right\rbrack{\overset{.}{\theta}}_{i}} \end{matrix} & (9) \end{matrix}$

Total torque from the total momentum of h_(disc) _(j) is given by: $\begin{matrix} {\tau_{{disc}_{j}} = {\sum\limits_{i \in S_{j}}\tau_{i}}} & (10) \end{matrix}$

Combining Eqns. 9 and 10 gives: $\begin{matrix} {\tau_{{disc}_{j}} = {{{\left\lbrack {{p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}},\frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right\rbrack\begin{bmatrix} 0 & 1 \\ {- 1} & 0 \end{bmatrix}}\left\lbrack {{p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}},\frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right\rbrack}^{\prime}{\sum\limits_{i \in S_{j}}{h_{i}{\overset{.}{\theta}}_{i}}}}} & (11) \end{matrix}$

Since τ_(disc) _(j) lies in a two-dimensional plane, only two of the gimbal rates, {dot over (θ)}_(i), with i∈S_(j), need to be independent. Therefore, a gimbal controller can gang, or couple, the gimbals in a way that leaves two independent variables. In an exemplary embodiment, if the controller splits S_(j) into three disjoint subsets, S_(j)=S_(ja)∪S_(jb)∪S_(jc) where {dot over (θ)}_(i)={dot over (θ)}_(ja) for i∈S_(ja), {dot over (θ)}_(i)={dot over (θ)}_(jb) for i∈S_(jb) and {dot over (θ)}_(i)=({dot over (θ)}_(ja)+{dot over (θ)}_(jb))/2 for i∈S_(jc) then the momenta of those three subsets can be expressed as: $\begin{matrix} \begin{matrix} {h_{ja} = {\sum\limits_{i \in S_{ja}}h_{i}}} & \quad & {h_{jb} = {\sum\limits_{i \in S_{jb}}h_{i}}} & \quad & {h_{jc} = {\sum\limits_{i \in S_{jc}}h_{i}}} \end{matrix} & (12) \end{matrix}$

FIG. 2 illustrates momentum vectors for a set of collinear CMGs. In FIG. 2, CMG_(a) provides a first momentum vector 202 (h_(ja)) and CMG_(b) provides a second momentum vector 204 (h_(jb)). For CMG_(c), the gimbal rate is dependent on the gimbal rates of CMG_(a) and CMG_(b), and CMG_(c) provides a third momentum vector 206 (h_(jc)). The total momentum vector 208 is the sum of the first momentum vector 202, the second momentum vector 204 and the third momentum vector 206. In this exemplary embodiment, CMG_(c), has its gimbal angle dependent on the gimbal angles for CMG_(a) and CMG_(b). The sum on the right of Eqn. 11, can then be written as: $\begin{matrix} \begin{matrix} {{\sum\limits_{i \in S_{j}}{h_{i}{\overset{.}{\theta}}_{i}}} = {{h_{ja}{\overset{.}{\theta}}_{ja}} + {h_{jb}{\overset{.}{\theta}}_{jb}} + {h_{jc}{\overset{.}{\theta}}_{jc}}}} \\ {= {{\left( {h_{ja} + h_{jb} + h_{jc}} \right)\frac{{\overset{.}{\theta}}_{jb} + {\overset{.}{\theta}}_{ja}}{2}} + {\left( {h_{jb} - h_{ja}} \right)\frac{{\overset{.}{\theta}}_{jb} - {\overset{.}{\theta}}_{ja}}{2}}}} \end{matrix} & (13) \end{matrix}$ giving τ_(disc) _(j) as: $\begin{matrix} \begin{matrix} {{\tau_{{disc}_{j}} = {{\left\lbrack {{p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}},\frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right\rbrack\begin{bmatrix} 0 & 1 \\ {- 1} & 0 \end{bmatrix}}\begin{bmatrix} \left( {p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right)^{\prime} \\ \left( \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}} \right)^{\prime} \end{bmatrix}}}\quad} \\ {\begin{bmatrix} h_{{disc}_{j}} & {h_{jb} - h_{ja}} \end{bmatrix}\begin{bmatrix} \frac{{\overset{.}{\theta}}_{jb} + {\overset{.}{\theta}}_{ja}}{2} \\ \frac{{\overset{.}{\theta}}_{jb} - {\overset{.}{\theta}}_{ja}}{2} \end{bmatrix}} \end{matrix} & (14) \end{matrix}$

Noting that the above 3-by-2 matrix just to the right of the equal sign is orthogonal results in an inverse formula: $\begin{matrix} {\begin{bmatrix} \frac{\left( {{\overset{.}{\theta}}_{jb} + {\overset{.}{\theta}}_{ja}} \right)}{2} \\ \frac{\left( {{\overset{.}{\theta}}_{jb} - {\overset{.}{\theta}}_{ja}} \right)}{2} \end{bmatrix} = \begin{matrix} \left( {{\begin{bmatrix} 0 & 1 \\ {- 1} & 0 \end{bmatrix}\begin{bmatrix} \left( {p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right)^{\prime} \\ \left( \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}} \right)^{\prime} \end{bmatrix}}\left\lbrack \quad\begin{matrix} h_{{disc}_{j}} & {h_{jb} - h_{ja}} \end{matrix}\quad \right\rbrack} \right)^{- 1} \\ {\left\lbrack {{p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}},\frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right\rbrack^{\prime}\tau_{{disc}_{j}}} \end{matrix}} & (15) \end{matrix}$

Since sufficient torque capabilities in all directions is desirable, for the above selection of gimbal rate constraints the following bound can be used: $\begin{matrix} {{\begin{bmatrix} {\left( {{\overset{.}{\theta}}_{jb} + {\overset{.}{\theta}}_{ja}} \right)/2} \\ {\left( {{\overset{.}{\theta}}_{jb} - {\overset{.}{\theta}}_{ja}} \right)/2} \end{bmatrix}} \leq \frac{{\sigma_{1}\left( \left\lbrack {{p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}},\frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right\rbrack^{\prime} \right)}*{\tau_{{disc}_{j}}}}{\sigma_{2}\left( {{\begin{bmatrix} 0 & 1 \\ {- 1} & 0 \end{bmatrix}\left\lbrack {{p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}},\frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right\rbrack}^{\prime}\left\lbrack \quad\begin{matrix} \begin{matrix} h_{{disc}_{j}} & {h_{jb} - h_{ja}} \end{matrix} \end{matrix}\quad \right\rbrack} \right)}} & (16) \end{matrix}$ This bound can be used to solve for a torque bound: $\begin{matrix} {\left( \frac{\tau_{{disc}_{j}}}{\underset{i \in S_{j}}{\max{{\overset{.}{\theta}}_{i}}}} \right)^{2} \geq {\frac{1}{2}\left( {{\min\left( {{h_{{disc}_{j}}}^{2},{\left( {{h_{ja}} + {h_{jb}}} \right)^{2} - \left( {{h_{{disc}_{j}}} - {h_{jc}}} \right)^{2}}} \right)} - \frac{\left( {h_{{disc}_{j}^{\prime}}*\left( {h_{jb} - h_{ja}} \right)} \right)^{2}}{{{h_{{disc}_{j}}}^{2} - {{{h_{jb} - h_{ja}}}^{2}}}}} \right)}} & (17) \end{matrix}$ This can be expressed as: $\begin{matrix} {\frac{\tau_{{disc}_{j}}}{\underset{i \in S_{j}}{\max{{\overset{.}{\theta}}_{i}}}} \geq A} & (18) \end{matrix}$

In the special case where h_(dic) _(j) ′*(h_(jb)−h_(ja))=0, the equation ${{{\tau_{{disc}_{j}}}/\max}{{\overset{.}{\theta}}_{i}}} = {\frac{1}{\sqrt{2}}{\min\left( {{h_{\overset{.}{{disc}_{j}}}},\sqrt{\left( {{h_{ja}} + {{\overset{.}{h}}_{\overset{.}{jb}}}} \right)^{2} - \left( {{h_{{disc}_{j}}} - {h_{jc}}} \right)^{2}}} \right)}}$ can be set equal to A and ∥h_(disc) _(j) ∥ solved for. This indicates that h_(disc) _(j) needs to lie in an annulus described by: $\begin{matrix} {{\sqrt{2}A} < {h_{{disc}_{j}}} < {{h_{jc}} + \sqrt{\left( {{h_{ja}} + {h_{jb}}} \right)^{2} - {2(A)^{2}}}}} & (19) \end{matrix}$

To control the sets of CMGs, in one exemplary embodiment, a controller can divide total momentum, h, amongst k individual discs according to the rule: $\begin{matrix} {h_{{disc}_{j}} = {{{L_{j}\left\lbrack {\sum\limits_{i = 1}^{k}L_{i}} \right\rbrack}^{- 1}h} + {\sum\limits_{i = 1}^{k}{\alpha_{ji}\left( {p_{i} \times p_{j}} \right)}}}} & (20) \end{matrix}$ where α_(ji)=α_(ij) such that: $\begin{matrix} {h = {\sum\limits_{j = 1}^{k}h_{{disc}_{j}}}} & (21) \end{matrix}$

Since the momentum of h_(disc) _(j) is in the plane perpendicular to unit vector p_(j), one choice for matrix L_(j) is the projection matrix onto the plane that is perpendicular to p_(j): L _(j) =I−p _(j) *p _(j)′  (22) The most general choice for L_(j) can be: L _(j)=(I−p _(j) *p _(j)′)*M _(j)  (23) where M_(j) is any 3-by-3 matrix. The values of α_(ji) can be chosen to maximize the amount of torque available within any given momentum sphere. If each L_(j) and α_(ji) are constant, then: $\begin{matrix} \begin{matrix} {\tau_{{disc}_{j}} = {\frac{\mathbb{d}}{\mathbb{d}t}h_{{disc}_{j}}}} \\ {= {{L_{j}\left\lbrack {\sum\limits_{i = 1}^{k}L_{i}} \right\rbrack}^{- 1}\frac{\mathbb{d}h}{\mathbb{d}t}}} \\ {= {{L_{j}\left\lbrack {\sum\limits_{i = 1}^{k}L_{i}} \right\rbrack}^{- 1}\tau}} \end{matrix} & (24) \end{matrix}$

Given a commanded torque, Eqn. 24 shows how to distribute that torque amongst the various discs. Gimbal controllers can take each of the τ_(disc) _(j) and solve for {dot over (θ)}_(i) for all i∈S_(j) using the following formula: $\begin{matrix} {{\tau_{{disc}_{j}} = {{{{\left\lbrack {{p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}},\frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}}\quad \right\rbrack\quad\left\lbrack \quad\begin{matrix} 0 & 1 \\ {- 1} & 0 \end{matrix} \right\rbrack}\left\lbrack \quad\begin{matrix} \left( {p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right)^{\prime} \\ \left( \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}} \right)^{\prime} \end{matrix} \right\rbrack}\left\lbrack \quad\begin{matrix} h_{{disc}_{j}} & {h_{jb} - h_{ja}} \end{matrix}\quad \right\rbrack}\left\lbrack \quad\begin{matrix} \frac{{\overset{.}{\theta}}_{jb} + {\overset{.}{\theta}}_{ja}}{2} \\ \frac{{\overset{.}{\theta}}_{jb} - {\overset{.}{\theta}}_{{ja}\quad}}{2} \end{matrix}\quad \right\rbrack}}\quad} & (25) \end{matrix}$

The above 3-by-2 matrix just to the right of the equal sign is orthogonal and provides an inverse formula: $\begin{matrix} {\begin{bmatrix} \frac{\left( {{\overset{.}{\theta}}_{jb} + {\overset{.}{\theta}}_{ja}} \right)}{2} \\ \frac{\left( {{\overset{.}{\theta}}_{jb} - {\overset{.}{\theta}}_{ja}} \right)}{2} \end{bmatrix} = {{\begin{pmatrix} \begin{bmatrix} 0 & 1 \\ {- 1} & 0 \end{bmatrix} \\ \begin{bmatrix} \left( {p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right)^{\prime} \\ \left( \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}} \right)^{\prime} \end{bmatrix} \\ \begin{bmatrix} h_{{disc}_{j}} & {h_{jb} - h_{ja}} \end{bmatrix} \end{pmatrix}^{- 1}\left\lbrack {{p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}},\frac{h_{{{disc}\quad}_{j}}}{h_{{disc}_{j}}}} \right\rbrack}^{\prime}\tau_{{disc}_{j}}}} & (26) \\ {\begin{bmatrix} \frac{\left( {{\overset{.}{\theta}}_{jb} + {\overset{.}{\theta}}_{ja}} \right)}{2} \\ \frac{\left( {{\overset{.}{\theta}}_{jb} - {\overset{.}{\theta}}_{ja}} \right)}{2} \end{bmatrix} = {{\begin{bmatrix} {h_{{disc}_{j}}} & {\frac{h_{{disc}_{j}}}{h_{{disc}_{j}}} \cdot \left( {h_{jb} - h_{ja}} \right)} \\ 0 & {{- \left( {p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right)} \cdot \left( {h_{jb} - h_{ja}} \right)} \end{bmatrix}^{- 1}\begin{bmatrix} {{p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}},} \\ \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}} \end{bmatrix}}^{\prime}{L_{j}\left\lbrack {\sum\limits_{i = 1}^{k}L_{i}} \right\rbrack}^{- 1}\tau}} & (27) \end{matrix}$

Given any commanded total torque, τ, Eqn. 27 provides the required gimbal rates, using the additional formulas: {dot over (θ)}_(ja)=({dot over (θ)}_(jb)+{dot over (θ)}_(ja))/2−({dot over (θ)}_(jb)−{dot over (θ)}_(ja))/2 {dot over (θ)}_(jb)=({dot over (θ)}_(jb)+{dot over (θ)}_(ja))/2−({dot over (θ)}_(jb)−{dot over (θ)}_(ja))/2 {dot over (θ)}_(jc)=({dot over (θ)}_(jb)+{dot over (θ)}_(ja))/2−coeff*[θ_(jc)−(θ_(jb)+θ_(ja))/2]  (28) where the small positive constant “coeff” corrects any small errors due to discrete integration.

In the special case where ∥h_(jb)∥=∥h_(ja)∥, then h_(disc) _(j) ′*(h_(jb)−h_(ja))=0, and $\begin{matrix} {{{- \left( {p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right)} \cdot \left( {h_{jb} - h_{ja}} \right)} = {\pm {{h_{jb} - h_{ja}}}}} & (29) \end{matrix}$

Examining FIG. 2, and noting that in the Eqn. 29, ∥h_(jb)−h_(ja)∥/2 is the distance from the base of a trapezoid to its top, the Pythagorean theorem can be used with the momentum vectors illustrated in FIG. 2 on the two triangular corners of the trapezoid to get: $\begin{matrix} {{{h_{jb} - h_{ja}}} = \sqrt{\left( {{h_{ja}} + {h_{jb}}} \right)^{2} - \left( {{h_{{disc}_{j}}} - {h_{jc}}} \right)^{2}}} & (30) \end{matrix}$

This reduces Eqn. 27 to: $\begin{matrix} {\begin{bmatrix} \frac{\left( {{\overset{.}{\theta}}_{jb} + \overset{.}{\theta}} \right)}{2} \\ \frac{\left( {{\overset{.}{\theta}}_{jb} - {\overset{.}{\theta}}_{ja}} \right)}{2} \end{bmatrix} = {\quad{\begin{bmatrix} \frac{1}{h_{{disc}_{j}}} & 0 \\ 0 & \frac{\pm 1}{\pm \sqrt{\left( {{h_{ja}} + {h_{jb}}} \right)^{2} - \left( {{h_{{disc}_{j}}} - {h_{jc}}} \right)^{2}}} \end{bmatrix}{\quad{\begin{bmatrix} \left( {p_{j} \times \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}}} \right)^{\prime} \\ \left( \frac{h_{{disc}_{j}}}{h_{{disc}_{j}}} \right)^{\prime} \end{bmatrix}{L_{j}\left\lbrack {\sum\limits_{i = 1}^{k}L_{i}} \right\rbrack}^{- 1}\tau}}}}} & (31) \end{matrix}$

Returning to the general case of Eqn. 27, if L_(j)=I−p_(j)*p′_(j) and P=[p₁, p₂, . . . p_(k)] then the annulus in which h_(disc) _(j) lies can be expressed as: $\begin{matrix} {{\sqrt{2}{A/\left( {k - {{P*P^{\prime}}}} \right)}} < {h_{{disc}_{j}}} < {{h_{jc}} + \sqrt{\left( {2{h_{ja}}} \right)^{2} - {2\left( {A/\left( {k - {{P*P^{\prime}}}} \right)} \right)^{2}}}}} & (32) \end{matrix}$ and the torque bound is: $\begin{matrix} {\frac{\tau }{\underset{i \in S_{j}}{\max{{\overset{.}{\theta}}_{i}}}} \geq A} & (33) \end{matrix}$

Therefore, whenever total momentum stays within a ball with a momentum radius of f(A), the available torque should be above some threshold; i.e., for any value of A: $\begin{matrix} {{\frac{\tau }{\underset{i \in S_{j}}{\max{{\overset{.}{\theta}}_{i}}}} \geq A}{{{whenever}\quad{h}} < {f(A)}}} & (34) \end{matrix}$

The momentum for each set of CMGs, as discussed previously, lies in an annulus of the form: $\begin{matrix} {{{r_{1}(A)} \leq {h_{{disc}_{j}}} \leq {r_{2}(A)}}{{j = 1},2,\ldots\quad,k}{{Where}\text{:}}} & (35) \\ {{r_{1}(A)} = {\sqrt{2}{A/\left( {k - {{P*P^{\prime}}}} \right)}}} & (36) \\ {{{r_{2}(A)} = {\min\limits_{j}\left( {{h_{jc}} + \sqrt{\left( {2{h_{ja}}} \right)^{2} - {2\left( {A/\left( {k - {{P*P^{\prime}}}} \right)} \right)^{2}}}} \right)}}{when}{{h_{ja}} = {h_{jb}}}} & (37) \end{matrix}$ and from Eqn. 20: $\begin{matrix} {h_{{disc}_{j}} = {{{L_{j}\left\lbrack {\sum\limits_{i = 1}^{k}L_{i}} \right\rbrack}^{- 1}h} + {\sum\limits_{i = 1}^{k}{\alpha_{j\quad i}\left( {p_{i} \times p_{j}} \right)}}}} & (38) \end{matrix}$

The α_(ji) should be chosen to ensure that each h_(disc) _(j) lies in its appropriate annulus when total momentum lies in the largest possible ball, ∥h∥<f(A). Eqns. 35-37 indicate that h_(disc) _(j) lies in an ellipse, with center determined by α_(ji), when ∥h∥<f(A). For each value of “A”, the values of α_(ji) are chosen to maximize the size of the h_(disc) _(j) ellipses, which lie between the inner and outer radii of the corresponding annuli. $\begin{matrix} {{\alpha(A)} = {{\arg\left\lbrack {\max\limits_{\alpha_{j\quad i}}\left\{ {{{f(A)}\quad{such}\quad{that}\quad{r_{1}(A)}} \leq {{h_{{disc}_{j}}\left( {h,\alpha_{ji}} \right)}} \leq {{r_{2}(A)}\quad{for}\quad{all}\quad{h}} \leq {f(A)}} \right\}} \right\rbrack}\quad = {\arg\left\lbrack {\max\limits_{\alpha_{ji}}\left\{ {{{f(A)}\quad{such}\quad{that}\quad{r_{1}(A)}} \leq {{{{L_{j}\left\lbrack {\sum\limits_{i = 1}^{k}L_{i}} \right\rbrack}^{- 1}h} + {\sum\limits_{i = 1}^{k}{\alpha_{ji}\left( {p_{i} \times p_{j}} \right)}}}} \leq {{r_{2}(A)}\quad{for}\quad{all}\quad{h}} \leq {f(A)}} \right\}} \right\rbrack}}} & (39) \end{matrix}$

When there are three sets of collinear CMGs, there are three independent α_(ji), i.e., (α₁₂, α₂₃, α₃₁) and three ellipses whose origin must be adjusted to allow the ellipses to be as large as possible, while still being inside the three annuli. In embodiments where there are two sets of collinear CMGs, there is one independent α_(ji), i.e. α=α₁₂ and two ellipses whose origin must be moved to allow the two ellipses to be as large as possible, while still being inside the two annuli. As f(A) is optimized, the ellipses touch the annuli in two or three places.

In the exemplary embodiment of two sets of collinear CMGs, the earlier equations reduce to: h _(disc1) =L ₁ [L ₁ +L ₂]⁻¹ h+α(p ₁ ×p ₂)  (40) h _(disc2) =L ₂ [L ₁ +L ₂]⁻¹ h−α(p ₁ ×p ₂)  (41) where the value of α can be chosen to maximize the torque that is available within any given size momentum ball.

If L₁, L₂ and α are constant, then: $\begin{matrix} {\tau_{{disc}_{1}} = {{\frac{\mathbb{d}}{\mathbb{d}t}h_{{disc}_{1}}} = {{{L_{1}\left\lbrack {L_{1} + L_{2}} \right\rbrack}^{- 1}\frac{\mathbb{d}h}{\mathbb{d}t}} = {{L_{1}\left\lbrack {L_{1} + L_{2}} \right\rbrack}^{- 1}\tau}}}} & (42) \\ {\tau_{{disc}_{2}} = {{\frac{\mathbb{d}}{\mathbb{d}t}h_{{disc}_{2}}} = {{{L_{2}\left\lbrack {L_{1} + L_{2}} \right\rbrack}^{- 1}\frac{\mathbb{d}h}{\mathbb{d}t}} = {{L_{2}\left\lbrack {L_{1} + L_{2}} \right\rbrack}^{- 1}\tau}}}} & (43) \end{matrix}$

FIG. 3 illustrates a first outer boundary 306 and a second outer boundary 302 for h_(disk1) and h_(disk2) respectively. The first outer boundary 306 and the second outer boundary 302 represent the maximum achievable momentum for hdisk1 and h_(disk2). The first outer boundary 306 and the second outer boundary 302, in the exemplary embodiment shown in FIG. 3, are circular boundaries with a radius r₂(A_(min)). Since there is a possibility of the existence of a singularity (or insufficient torque, where ∥τ∥≧A_(MIN)∥{dot over (θ)}∥) at the maximum momentum, a smaller momentum boundary in which to operate the CMGs can be chosen, which guarantees some larger torque level (where ∥τ∥>A∥{dot over (θ)}∥). For example, a first reduced maximum boundary 308 and a second reduced maximum boundary 304 can be selected as the maximum momentum for each of the two discs. The radius of the first reduced maximum boundary 308 and a second reduced maximum boundary 304 is r₂(A), where r₂(A)<r₂(A_(min)).

In addition, singularities can exist at or near the origin, O, of each of the two momentum discs. Therefore, a first increased minimum boundary 312, and a second increased minimum boundary 310 can be defined. The radius of the first increased minimum boundary 312 and the second increased minimum boundary 310 can be denoted as r₁(A). First reduced maximum boundary 308 and first increased minimum boundary 312 define an annulus for h_(disk1) and the second reduced maximum boundary 304 and the second increased minimum boundary 310 define an annulus for h_(disk2). A first ellipse 314 lies within the annulus defined by the first reduced maximum boundary 308 and first increased minimum boundary 312 and a second ellipse 316 lies within the annulus defined by the second reduced maximum boundary 304 and the second increased minimum boundary 310. The first ellipse 314 is where the h_(disk1) lies and the second ellipse 316 is where the h_(disk2) lies when ∥h∥=∥h_(disc) ₁ +h_(disc) ₂ ∥≦f(A) lies within a sphere of radius f(A). In FIG. 3, sphere 320 is the momentum sphere formed by the combination of first ellipse 314 and second ellipse 316.

To maximize the radius f(A), which will maximize the momentum for a given size torque limit, “A,” an ellipse offset function α(A) is calculated. If the normal vectors, p1 and p2, of the two momentum discs are chosen to be orthogonal, then p₁′*p₂=0, and the entire system of CMGs can be rotated until those two unit vectors line up with the first two coordinate axes: $\begin{matrix} {{p_{1} = \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix}}{p_{2} = \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix}}{and}{{p_{1} \times p_{2}} = \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix}}{{This}\quad{gives}\text{:}}} & (44) \\ {{L_{1} = {{I - {p_{1}*p_{1}^{\prime}}} = \begin{bmatrix} 0 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}}}{L_{2} = {{I - {p_{2}*p_{2}^{\prime}}} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix}}}{and}} & (45) \\ {{{L_{1}\left( {L_{1} + L_{2}} \right)}^{- 1} = \begin{bmatrix} 0 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & {1/2} \end{bmatrix}}{{L_{2}\left( {L_{1} + L_{2}} \right)}^{- 1} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & {1/2} \end{bmatrix}}} & (46) \end{matrix}$ This results in two ellipses with each ellipse representing the momentum of a set of CMGs. $\begin{matrix} {h_{{disc}_{1}} = {{{{L_{1}\left\lbrack {L_{1} + L_{2}} \right\rbrack}^{- 1}h} + {\alpha\left( {p_{1} \times p_{2}} \right)}} = \begin{bmatrix} 0 \\ h_{y} \\ {{h_{z}/2} + \alpha} \end{bmatrix}}} & (47) \\ {h_{{disc}_{2}} = {{{{L_{2}\left\lbrack {L_{1} + L_{2}} \right\rbrack}^{- 1}h} - {\alpha\left( {p_{1} \times p_{2}} \right)}} = \begin{bmatrix} h_{x} \\ 0 \\ {{h_{z}/2} - \alpha} \end{bmatrix}}} & (48) \end{matrix}$

To maximize the size, f(A), of the 3D momentum sphere, the function α(A)needs to be chosen such that it determines the two ellipse centers at ±[0;0;α], which will keep each ellipse within its annulus whose inner radius is r1 and outer radius is r2. $\begin{matrix} {{\alpha(A)} = {\arg\left\lbrack {\begin{matrix} \max \\ \alpha \end{matrix}\begin{Bmatrix} {{{{f(A)}\quad{s.t.\quad{r_{1}(A)}}} \leq {\begin{bmatrix} h_{y} \\ {\frac{h_{z}}{2} + \alpha} \end{bmatrix}} \leq {r_{2}(A)}}\&} \\ {{r_{1}(A)} \leq {\begin{bmatrix} h_{x} \\ {\frac{h_{z}}{2} - \alpha} \end{bmatrix}} \leq {{r_{2}(A)}\quad{for}\quad{all}\quad{\begin{bmatrix} h_{x} \\ h_{y} \\ h_{z} \end{bmatrix}}} \leq {f(A)}} \end{Bmatrix}} \right\rbrack}} & (49) \end{matrix}$

The maximum of f(A) is attained when each ellipse touches both the inner and outer radii of each corresponding annulus. Since each ellipse has a similar structure, the same value of α causes each ellipse to touch both inner and outer radii of its corresponding annulus. For each optimum value of α, the same optimum value would be achieved by changing the sign on α, so only positive values of α are considered. Consider the first ellipse, whose equation is: $\begin{matrix} {{\begin{bmatrix} x \\ y \\ z \end{bmatrix} = \begin{bmatrix} 0 \\ h_{y} \\ {\frac{h_{z}}{2} + \alpha} \end{bmatrix}}{{such}\quad{that}}\quad{{\begin{bmatrix} h_{x} \\ h_{y} \\ h_{z} \end{bmatrix}} \leq f}{{{{or}(y)}^{2} + \left( {2*\left( {z - \alpha} \right)} \right)^{2}} = {f^{2}\quad{ellipse}\quad{in}\quad\left( {y,z} \right)\quad{{plane}.}}}} & (50) \end{matrix}$

The point [x,y,z]=[0,0,r₁(A)] is where an ellipse just touches its annular boundaries at the smallest radius, r₁(A). If the points [0,±y₀,z₀] are where the ellipse just touches its annular boundaries at the largest radius, r₂(A), then the following equations for the values of α(A), f(A), y₀(A) and z₀(A) can be solved, using the known intermediate functions r₁(A) and r₂(A): (y ₀)²+(z ₀)²=(r ₂(A))² since [0±,y ₀ , z ₀] lie on circle of radius r ₂(A)  (51) (y ₀)²+(2*(z ₀−α))² =f ² since [0,±y ₀ ,z ₀] lie on ellipse  (52) $\begin{matrix} {{\frac{- y_{0}}{z_{0}} = {\frac{\mathbb{d}z_{0}}{\mathbb{d}y_{0}} = \frac{- y_{0}}{4*\left( {z_{0} - \alpha} \right)}}}\quad{equating}\quad{slopes}\quad{of}\quad{above}\quad{circle}\quad{and}\quad{ellipse}\quad{equations}} & (53) \end{matrix}$  (2*(r ₁(A)−α))² =f ²(A) since [0,0 ,r ₁(A)] lies on ellipse  (54)

The two solutions of Eqn. 53 are: y ₀₌0or z ₀₌4*(z ₀−α) where r ₁(A)<α<r ₂(A)  (55)

Using these two solutions to solve the remaining three equations gives:

Solution 1: $\begin{matrix} {y_{0} = 0} & (56) \\ {z_{0} = r_{2}} & (57) \\ {\alpha = \frac{{r_{1}(A)} + {r_{2}(A)}}{2}} & (58) \\ {{f_{{solution}\quad 1}(A)} = {{r_{2}(A)} - {r_{1}(A)}}} & (59) \end{matrix}$

Solution2: The z₀=4*(z₀−α) solution implies that z₀₌4α/3. Subtracting equations 51 and 52 eliminates y₀, leaving: 3*(z ₀)²−(8α)*z ₀+(4α² +r ₂(A)² −f(A)²)=0  (60)

Substituting z₀=4α/3 into this equation gives: $\begin{matrix} {{{3*\left( \frac{4\alpha}{3} \right)^{2}} - {\left( {8\alpha} \right)*\left( \frac{4\alpha}{3} \right)} + \left( {{4\alpha^{2}} + r_{2}^{2} - f^{2}} \right)} = 0} & (61) \\ {{4\alpha^{2}} = {3\left( {{r_{2}(A)}^{2} - {f(A)}^{2}} \right)}} & (62) \end{matrix}$ or

In order for the ellipse to be inside the annulus, α>r₁(A). Given α>r₁(A), Eqn. 54 is: $\begin{matrix} {\alpha = {{r_{1}(A)} + \frac{f(A)}{2}}} & (63) \end{matrix}$

Substituting Eqn. 63 into Eqn. 62 results in: $\begin{matrix} {{4\left( {{r_{1}(A)} + \frac{f(A)}{2}} \right)^{2}} = {3\left( {{r_{2}(A)}^{2} - {f(A)}^{2}} \right)}} & (64) \end{matrix}$

Solving this quadratic equation for f, and keeping the positive solution gives the value of f for solution₂: $\begin{matrix} {{f_{{solution}\quad 2}(A)} = \frac{{- {r_{1}(A)}} + \sqrt{3\left( {{r_{2}(A)}^{2} - {r_{1}(A)}^{2}} \right)}}{2}} & (65) \end{matrix}$

Note that for any given value of r₁(A)/r₂(A), both solution 1 and solution 2′ will give an ellipse that is tangent to both the inner and outer radius of the annulus, but exactly one of the solutions will give an ellipse that is totally inside the annulus. Setting f_(solution1)(A)=f_(solution2)(A) gives r₂(A)=2r₁ (A) where the valid solution switches between solution 1 and solution 2. For r₂(A)<2r₁ (A), solution 1 gives an ellipse that is inside the annulus. For r₂(A)>2r₁ (A), solution 2 gives an ellipse that is inside the annulus. This is illustrated in FIG. 4 a and FIG. 4 b. FIG. 4 a illustrates a first ellipse 402 inside a first annular region 404 where 2r₁ (A)>r₂(A). FIG. 4 b illustrates a second ellipse 406 inside a second annular region 408 where 2r₁ (A)<r₂(A). Solution 1 can be used for the situation depicted in FIG. 4 a and solution₂ can be used for the situation depicted in FIG. 4 b.

To complete the solutions, recall from earlier in this section that: $\begin{matrix} {{r_{1}(A)} = {\sqrt{2}A}} & (66) \\ {{{r_{2}(A)} = {\begin{matrix} \min \\ {{j = 1},2} \end{matrix}\left( {{h_{jc}} + \sqrt{\left( {2{h_{ja}}} \right)^{2} - {2A^{2}}}} \right)}}{where}{{h_{jb}} = {h_{ja}}}} & (67) \end{matrix}$

In the case where each of the two discs has three collinear CMGs, and all six ∥h_(i)∥ are equal: $\begin{matrix} {{r_{1}(A)} = {\sqrt{2}A}} & (68) \\ {{{r_{2}(A)} = {{h_{i}} + \sqrt{\left( {2{h_{i}}} \right)^{2} - {2A^{2}}}}}{{where}\quad{all}\quad{six}}{{h_{i}}\quad{are}\quad{equal}}} & (69) \end{matrix}$

The maximum value of A with all six ∥h_(i)∥ equal and or r₁(A)<r₂(A), $A < {{h_{i}}{\frac{1 + \sqrt{7}}{2\sqrt{2}}.}}$

In the case where either or both of the two discs has lost one of its three collinear CMGs, label the lost CMG as ∥h_(jc)∥ thus: r ₁(A)=√{square root over (2)}A  (70) r ₂(A)=0+√{square root over ((2∥h _(i)∥)²−2A ²)} where all unfailed ∥h_(i)∥ are equal.  (71)

A<∥h_(i)∥represents the maximum value of A after a failure.

In summary, to ensure that available torque is above some threshold, A, whenever total momentum stays within some ball of a given size, f(A): $\begin{matrix} {\frac{\tau }{\begin{matrix} {\max{{\overset{.}{\theta}}_{i}}} \\ i \end{matrix}} \geq {A\quad{whenever}\quad{h}} \leq {f(A)}} & (72) \end{matrix}$ we need f(A) to be given by: $\begin{matrix} {{f(A)} = \begin{Bmatrix} {{r_{2}(A)} - {r_{1}(A)}} & {when} & {r_{2} < {2r_{1}}} \\ \frac{\sqrt{3\left( {{r_{2}(A)}^{2} - {r_{1}(A)}^{2}} \right)} - {r_{1}(A)}}{2} & {when} & {{r_{2}(A)} > {2{r_{1}(A)}}} \end{Bmatrix}} & (73) \end{matrix}$

FIG. 5 is a flowchart of an exemplary method for controlling sets of collinear CMGs. In a first step, step 502, an offset value for each set of CMGs is determined. The offset value determines the maximum momentum ellipse for a set of CMGs that is fully within an annular region derived from the total momentum available from all sets of CMGs. In the exemplary embodiment where there are two orthogonal sets of CMGs, with each set containing three CMGs, the offset value can be determined using Eqn. 73. By determining the appropriate ellipse for each set of CMGs, a guaranteed minimum amount of torque can be calculated.

Next, in step 504, a maneuvering command to rotate spacecraft orientation is received. In one exemplary embodiment, the maneuvering command is sent from a ground control station to the attitude control system 102 of the spacecraft. Alternatively, the maneuvering command may be generated by the spacecraft based, for example, on a preplanned movement schedule.

After the maneuvering command is received, the torque required for each set of CMGs is determined in step 506. In one embodiment, the needed torque for all sets of collinear CMGs to provide the required maneuver is determined. Then, in step 508, the total torque needed is split into the individual torque required for each set of CMGs which is determined using Eqn. 24. Alternatively, the momentum needed to maneuver the spacecraft can be determined and allocated between each set of CMGs. Torque can then be calculated by taking the derivative of the momentum. These calculations can be done at the attitude control system 102.

In step 510, gimbal rates for each CMG in a set of CMGs are determined. The gimbal rates can be determined by Eqns. 27-28. In one exemplary embodiment, the gimbal rates can be determined by the momentum actuator control processor.

In step 512, the gimbals for each of the collinear CMGs for each set of collinear CMGs are then moved to provide the proper momentum.

The exemplary embodiment or embodiments described herein are not intended to limit the scope, applicability, or configuration of the invention in any way. Rather, the foregoing detailed description will provide those skilled in the art with a convenient road map for implementing the described embodiment or embodiments. It should be understood that various changes can be made in the function and arrangement of elements without departing from the scope of the invention as set forth in the appended claims and the legal equivalents thereof. 

1. A method for controlling the movement of two or more sets of collinear control moment gyroscope (CMGs) in an array of CMGs in a spacecraft comprising: determining an offset for each set of the two or more sets of collinear CMGs to maximize available torque; receiving a command to adjust an orientation of the spacecraft; determining a total torque to adjust the orientation of the spacecraft; allocating the total torque to produce an allocated torque for each set of the two or more sets of collinear CMGs; and calculating a required gimbal movement for each set of the CMGs in the two or more sets of collinear CMGs from the allocated torque.
 2. The method of claim 1, wherein the step of determining an offset further comprises maximizing an ellipse representative of the momentum space in an annular region for one set of the two or more sets of collinear CMGs.
 3. The method of claim 1, wherein the step of determining an offset further comprises allocating an annular region based on a maximum momentum boundary that avoids the edge of a momentum space and a minimum momentum boundary that avoids a center of the momentum space.
 4. The method of claim 1, wherein the step of determining an offset further comprises determining a torque bound for a given momentum radius, f(A).
 5. The method of claim 1, wherein the step of calculating a required gimbal movement further comprises calculating a required gimbal movement for each of the remaining CMGs in a set of CMGs-after the failure of a CMG.
 6. The method of claim 1, wherein the step of determining the total torque further comprises: calculating a total momentum needed to adjust the orientation of the spacecraft taking the derivative of a total momentum; determining if the total momentum exceeds an available momentum sphere having a radius of f(A); and calculating a total torque needed adjust the orientation of the spacecraft by taking the derivative of the total momentum.
 7. A control system of a spacecraft for controlling two or more sets of collinear control moment gyroscopes (CMGs), the control system comprising: an attitude control system configured to: receive a command to adjust an orientation of the spacecraft; determine an offset for a momentum ellipse for each of the two or more sets of CMGs that maximizes torque; determine a momentum needed from the two or more sets of CMGs to adjust the orientation of the spacecraft; calculate a total torque needed by taking the derivative of the momentum; and, a momentum actuator control processor coupled to the attitude control system, the momentum actuator control processor configured to calculate a required gimbal movement for each of the CMGs in each of the two or more sets of collinear CMGs from total torque.
 8. The system of claim 7, wherein the attitude control system is further configured to allocating the total torque to produce an allocated torque for each set of the two or more sets of collinear CMGs.
 9. The system of claim 7, wherein the attitude control system is further configured to determine if the momentum needed exceeds the momentum available in a momentum sphere having a radius of f(A).
 10. The system of claim 7, wherein the attitude control system is further configured to determine an offset for a momentum disk by maximizing an ellipse representative of the momentum space in an annular region for each set of the two or more sets of collinear CMGs.
 11. The system of claim 7, wherein the attitude control system is further configured to determine a torque bound for a given momentum radius, f(A).
 12. The system of claim 7, the attitude control system is further configured to calculating a required gimbal movement for each of the remaining CMGs in a set of CMGs after the failure of a CMG in the set of CMGs.
 13. A method for singularity free movement of an array of control moment gyroscopes (CMGs) comprising: allocating the array of CMGs as at least two sets of collinear CMGs, calculating an offset for a momentum ellipse for each of the at least two sets of CMGs that maximizes torque; determining a momentum radius f(A), the momentum radius f(A) defining a sphere of allowable momentum; and determining if a requested momentum to change the orientation of a spacecraft is within the sphere of allowable momentum; and determining a gimbal movement for each CMG to provide the requested momentum if the requested momentum is within the sphere of allowable momentum.
 14. The method of claim 13, wherein the step of calculating an offset for a momentum ellipse further comprises maximize the size of the momentum ellipse with in an annular region.
 15. The method of claim 13, wherein the step of determining a gimbal movement for each CMG further comprises: determining a total torque to change the orientation of the spacecraft by taking the derivative of the requested momentum; allocating the total torque to produce an allocated torque for each set of the at least two sets of collinear CMGs; and calculating the gimbal movement for each set of the CMGs in the at least two sets of collinear CMGs from the allocated torque. 